Rules-based systems typically model a problem with fact data. The fact data may take the form of rules and definitions. An inference engine may then process these rules and output search results based on a set of input parameters. Rules-based systems can often be deployed for use by artificial intelligence (AI) and search applications.
One implementation of a rules-based search engine may allow the use of attributes in the form of key-value pairs as the input parameters. In general, an attribute may be satisfied when the key-value pair associated with the attribute exists in the input. Each searchable entity can often have any number of attributes in one-to-many relationships. The search engine may successfully return an entity in the search results when all of the searchable entity's attributes are satisfied in the input.
In a typical relational database implementation, entities and attributes are often stored in separate tables. The attributes table may have a foreign key for each attribute that can be tied to an entity in the entities table. When searching the relational database, these tables can be traversed to find the entities whose attributes that may be satisfied by an input set of attributes. One problem is that with this setup, a search may have to compare each entity's attributes with the input attributes. This approach does not scale well with a large amount of data (e.g., millions of rows) because the amount of processing grows with the number of attributes.
Accordingly, what is desired are improved methods and apparatus for solving the problems discussed above. Additionally, what is desired are improved methods and apparatus for reducing some of the drawbacks discussed above.